{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['axes.labelsize'] = 18\n",
    "plt.rcParams['axes.linewidth'] = 1.0\n",
    "plt.rcParams['figure.facecolor'] = 'w'\n",
    "\n",
    "plt.rcParams['font.size'] = 14\n",
    "plt.rcParams['font.sans-serif'] = ['Arial']\n",
    "plt.rcParams['mathtext.cal'] = 'serif'\n",
    "plt.rcParams['mathtext.rm'] = 'serif'\n",
    "plt.rcParams['mathtext.it'] = 'serif:italic'\n",
    "plt.rcParams['mathtext.bf'] = 'serif:bold'\n",
    "plt.rcParams['mathtext.fontset'] = 'cm'\n",
    "\n",
    "plt.rcParams['xtick.direction'] = 'in'\n",
    "plt.rcParams['xtick.major.width'] = 1.0\n",
    "plt.rcParams['ytick.direction'] = 'in'\n",
    "plt.rcParams['ytick.major.width'] = 1.0\n",
    "\n",
    "plt.rcParams['legend.loc'] = 'best'\n",
    "plt.rcParams['legend.frameon'] = True\n",
    "plt.rcParams['legend.framealpha'] = 1.0\n",
    "plt.rcParams['legend.facecolor'] = 'white'\n",
    "plt.rcParams['legend.edgecolor'] = 'black'\n",
    "plt.rcParams['legend.fancybox'] = False\n",
    "\n",
    "plt.rcParams['grid.color'] = 'black'\n",
    "plt.rcParams['grid.linewidth'] = 1.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('times_genqubo.pkl', 'rb') as f:\n",
    "    times_genqubo = pickle.load(f)\n",
    "with open('times_pyqubo.pkl', 'rb') as f:\n",
    "    times_pyqubo = pickle.load(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prob_sizes = np.array([5, 7, 10, 20, 50, 70, 100])\n",
    "mean_genqubo = [np.mean(times_genqubo[n]) for n in prob_sizes]\n",
    "mean_pyqubo = [np.mean(times_pyqubo[n]) for n in prob_sizes]\n",
    "std_genqubo = [np.std(times_genqubo[n]) for n in prob_sizes]\n",
    "std_pyqubo = [np.std(times_pyqubo[n]) for n in prob_sizes]\n",
    "\n",
    "plt.errorbar(x=prob_sizes**2, y=mean_genqubo, yerr=std_genqubo,\n",
    "             c='blue', marker='o', label='GenQUBO')\n",
    "plt.errorbar(x=prob_sizes**2, y=mean_pyqubo, yerr=std_pyqubo,\n",
    "             c='orange', marker='x', label='PyQUBO')\n",
    "plt.xscale('log')\n",
    "plt.yscale('log')\n",
    "plt.xlabel('Problem size')\n",
    "plt.ylabel('Elapsed time [s]')\n",
    "plt.legend()\n",
    "plt.tight_layout()\n",
    "plt.savefig('elapsed_time.png')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('times_optneal.pkl', 'rb') as f:\n",
    "    times_optneal = pickle.load(f)\n",
    "with open('times_cpppyqubo.pkl', 'rb') as f:\n",
    "    times_pyqubo = pickle.load(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prob_sizes = np.array([5, 7, 10, 20, 50, 70, 100])\n",
    "mean_optneal = [np.mean(times_optneal[n]) for n in prob_sizes]\n",
    "mean_pyqubo = [np.mean(times_pyqubo[n]) for n in prob_sizes]\n",
    "std_optneal = [np.std(times_optneal[n]) for n in prob_sizes]\n",
    "std_pyqubo = [np.std(times_pyqubo[n]) for n in prob_sizes]\n",
    "\n",
    "plt.errorbar(x=prob_sizes**2, y=mean_optneal, yerr=std_optneal,\n",
    "             c='blue', marker='o', label='Optneal')\n",
    "plt.errorbar(x=prob_sizes**2, y=mean_pyqubo, yerr=std_pyqubo,\n",
    "             c='orange', marker='x', label='CppPyQUBO')\n",
    "plt.xscale('log')\n",
    "plt.yscale('log')\n",
    "plt.xlabel('Problem size')\n",
    "plt.ylabel('Elapsed time [s]')\n",
    "plt.legend()\n",
    "plt.tight_layout()\n",
    "plt.savefig('elapsed_time_v2.png')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
